import axios from "axios";
// 创建axios实例
const instance = axios.create({
  baseURL: "http://localhost:8000",
  timeout: 5000,
});

// 请求拦截器
instance.interceptors.request.use(
  (config) => {
    // 比如在这里添加token到请求头中，假设token存储在localStorage里名为 'access_token' 的字段中
    const token = localStorage.getItem("token");
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器
instance.interceptors.response.use(
  (response) => {
    const res = response.data;
    // 假设后端接口返回的数据格式中，成功时会有一个code字段为200表示成功，可根据实际情况调整
    if (res.code === 200) {
      return res;
    } else {
      // 若不是200，可以在这里统一抛出错误或者给出提示信息等，比如使用console.log
      console.error(res.message || "请求出错");
      return Promise.reject(res.message || "请求出错");
    }
  },
  (error) => {
    // 处理网络错误等情况，比如请求超时、网络连接失败
    if (error.response) {
      // 有响应，但是状态码表示错误，比如404、500等，可以根据具体状态码做不同处理
      const statusCode = error.response.status;
      if (statusCode === 401) {
        // 例如401表示未授权，可能需要跳转到登录页面等操作
        console.log("未授权，需要重新登录");
      } else if (statusCode === 404) {
        console.log("请求资源不存在");
      } else {
        console.log("其他错误", error.response.data);
      }
    } else if (error.request) {
      // 请求已发出，但没有收到响应，比如网络问题
      console.log("网络请求超时或无响应");
    } else {
      // 其他错误，比如配置错误等
      console.log("请求配置错误", error.message);
    }
    return Promise.reject(error);
  }
);
export default axios;
